package org.openarchitectureware.recipe2.dsl.parser.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.xtext.parsetree.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.eclipse.xtext.conversion.ValueConverterException;
import org.openarchitectureware.recipe2.dsl.services.RecipeBuilderGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

public class InternalRecipeBuilderParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'import'", "'required-plugin'", "'version'", "'re-export'", "'predefs-template-package'", "'predef-template'", "'plugin-template'"
    };
    public static final int RULE_ML_COMMENT=7;
    public static final int RULE_ID=5;
    public static final int RULE_WS=9;
    public static final int EOF=-1;
    public static final int RULE_INT=6;
    public static final int RULE_STRING=4;
    public static final int RULE_ANY_OTHER=10;
    public static final int RULE_SL_COMMENT=8;

        public InternalRecipeBuilderParser(TokenStream input) {
            super(input);
        }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g"; }


     
     	private RecipeBuilderGrammarAccess grammarAccess;
     	
        public InternalRecipeBuilderParser(TokenStream input, IAstFactory factory, RecipeBuilderGrammarAccess grammarAccess) {
            this(input);
            this.factory = factory;
            registerRules(grammarAccess.getGrammar());
            this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected InputStream getTokenFile() {
        	ClassLoader classLoader = getClass().getClassLoader();
        	return classLoader.getResourceAsStream("org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.tokens");
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "RecipeBuilderModel";	
       	} 



    // $ANTLR start entryRuleRecipeBuilderModel
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:72:1: entryRuleRecipeBuilderModel returns [EObject current=null] : iv_ruleRecipeBuilderModel= ruleRecipeBuilderModel EOF ;
    public final EObject entryRuleRecipeBuilderModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRecipeBuilderModel = null;


        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:72:60: (iv_ruleRecipeBuilderModel= ruleRecipeBuilderModel EOF )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:73:2: iv_ruleRecipeBuilderModel= ruleRecipeBuilderModel EOF
            {
             currentNode = createCompositeNode(grammarAccess.getRecipeBuilderModelRule(), currentNode); 
            pushFollow(FOLLOW_ruleRecipeBuilderModel_in_entryRuleRecipeBuilderModel73);
            iv_ruleRecipeBuilderModel=ruleRecipeBuilderModel();
            _fsp--;

             current =iv_ruleRecipeBuilderModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRecipeBuilderModel83); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleRecipeBuilderModel


    // $ANTLR start ruleRecipeBuilderModel
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:80:1: ruleRecipeBuilderModel returns [EObject current=null] : ( (lv_imports_0= ruleImport )* (lv_pluginImports_1= rulePluginImport )* (lv_pluginTemplates_2= rulePluginTemplate )* (lv_predefTemplatePatterns_3= rulePredefTemplatePackage )* (lv_predefTemplates_4= rulePredefTemplate )* ) ;
    public final EObject ruleRecipeBuilderModel() throws RecognitionException {
        EObject current = null;

        EObject lv_imports_0 = null;

        EObject lv_pluginImports_1 = null;

        EObject lv_pluginTemplates_2 = null;

        EObject lv_predefTemplatePatterns_3 = null;

        EObject lv_predefTemplates_4 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:85:6: ( ( (lv_imports_0= ruleImport )* (lv_pluginImports_1= rulePluginImport )* (lv_pluginTemplates_2= rulePluginTemplate )* (lv_predefTemplatePatterns_3= rulePredefTemplatePackage )* (lv_predefTemplates_4= rulePredefTemplate )* ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:86:1: ( (lv_imports_0= ruleImport )* (lv_pluginImports_1= rulePluginImport )* (lv_pluginTemplates_2= rulePluginTemplate )* (lv_predefTemplatePatterns_3= rulePredefTemplatePackage )* (lv_predefTemplates_4= rulePredefTemplate )* )
            {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:86:1: ( (lv_imports_0= ruleImport )* (lv_pluginImports_1= rulePluginImport )* (lv_pluginTemplates_2= rulePluginTemplate )* (lv_predefTemplatePatterns_3= rulePredefTemplatePackage )* (lv_predefTemplates_4= rulePredefTemplate )* )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:86:2: (lv_imports_0= ruleImport )* (lv_pluginImports_1= rulePluginImport )* (lv_pluginTemplates_2= rulePluginTemplate )* (lv_predefTemplatePatterns_3= rulePredefTemplatePackage )* (lv_predefTemplates_4= rulePredefTemplate )*
            {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:86:2: (lv_imports_0= ruleImport )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:89:6: lv_imports_0= ruleImport
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getRecipeBuilderModelAccess().getImportsImportParserRuleCall_0_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleImport_in_ruleRecipeBuilderModel142);
            	    lv_imports_0=ruleImport();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getRecipeBuilderModelRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "imports", lv_imports_0, "Import", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:107:3: (lv_pluginImports_1= rulePluginImport )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==12) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:110:6: lv_pluginImports_1= rulePluginImport
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getRecipeBuilderModelAccess().getPluginImportsPluginImportParserRuleCall_1_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_rulePluginImport_in_ruleRecipeBuilderModel181);
            	    lv_pluginImports_1=rulePluginImport();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getRecipeBuilderModelRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "pluginImports", lv_pluginImports_1, "PluginImport", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:128:3: (lv_pluginTemplates_2= rulePluginTemplate )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==17) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:131:6: lv_pluginTemplates_2= rulePluginTemplate
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getRecipeBuilderModelAccess().getPluginTemplatesPluginTemplateParserRuleCall_2_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_rulePluginTemplate_in_ruleRecipeBuilderModel220);
            	    lv_pluginTemplates_2=rulePluginTemplate();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getRecipeBuilderModelRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "pluginTemplates", lv_pluginTemplates_2, "PluginTemplate", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:149:3: (lv_predefTemplatePatterns_3= rulePredefTemplatePackage )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==15) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:152:6: lv_predefTemplatePatterns_3= rulePredefTemplatePackage
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getRecipeBuilderModelAccess().getPredefTemplatePatternsPredefTemplatePackageParserRuleCall_3_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_rulePredefTemplatePackage_in_ruleRecipeBuilderModel259);
            	    lv_predefTemplatePatterns_3=rulePredefTemplatePackage();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getRecipeBuilderModelRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "predefTemplatePatterns", lv_predefTemplatePatterns_3, "PredefTemplatePackage", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);

            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:170:3: (lv_predefTemplates_4= rulePredefTemplate )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==16) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:173:6: lv_predefTemplates_4= rulePredefTemplate
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getRecipeBuilderModelAccess().getPredefTemplatesPredefTemplateParserRuleCall_4_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_rulePredefTemplate_in_ruleRecipeBuilderModel298);
            	    lv_predefTemplates_4=rulePredefTemplate();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getRecipeBuilderModelRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "predefTemplates", lv_predefTemplates_4, "PredefTemplate", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleRecipeBuilderModel


    // $ANTLR start entryRuleImport
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:198:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
    public final EObject entryRuleImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImport = null;


        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:198:48: (iv_ruleImport= ruleImport EOF )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:199:2: iv_ruleImport= ruleImport EOF
            {
             currentNode = createCompositeNode(grammarAccess.getImportRule(), currentNode); 
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport336);
            iv_ruleImport=ruleImport();
            _fsp--;

             current =iv_ruleImport; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport346); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleImport


    // $ANTLR start ruleImport
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:206:1: ruleImport returns [EObject current=null] : ( 'import' (lv_importURI_1= RULE_STRING ) ) ;
    public final EObject ruleImport() throws RecognitionException {
        EObject current = null;

        Token lv_importURI_1=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:211:6: ( ( 'import' (lv_importURI_1= RULE_STRING ) ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:212:1: ( 'import' (lv_importURI_1= RULE_STRING ) )
            {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:212:1: ( 'import' (lv_importURI_1= RULE_STRING ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:212:2: 'import' (lv_importURI_1= RULE_STRING )
            {
            match(input,11,FOLLOW_11_in_ruleImport380); 

                    createLeafNode(grammarAccess.getImportAccess().getImportKeyword_0(), null); 
                
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:216:1: (lv_importURI_1= RULE_STRING )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:218:6: lv_importURI_1= RULE_STRING
            {
            lv_importURI_1=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleImport402); 

            		createLeafNode(grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0(), "importURI"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getImportRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "importURI", lv_importURI_1, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleImport


    // $ANTLR start entryRulePluginImport
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:243:1: entryRulePluginImport returns [EObject current=null] : iv_rulePluginImport= rulePluginImport EOF ;
    public final EObject entryRulePluginImport() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePluginImport = null;


        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:243:54: (iv_rulePluginImport= rulePluginImport EOF )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:244:2: iv_rulePluginImport= rulePluginImport EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPluginImportRule(), currentNode); 
            pushFollow(FOLLOW_rulePluginImport_in_entryRulePluginImport443);
            iv_rulePluginImport=rulePluginImport();
            _fsp--;

             current =iv_rulePluginImport; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePluginImport453); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePluginImport


    // $ANTLR start rulePluginImport
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:251:1: rulePluginImport returns [EObject current=null] : ( 'required-plugin' (lv_name_1= RULE_STRING ) ( 'version' (lv_version_3= RULE_STRING ) )? (lv_reExport_4= 're-export' ) ) ;
    public final EObject rulePluginImport() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_version_3=null;
        Token lv_reExport_4=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:256:6: ( ( 'required-plugin' (lv_name_1= RULE_STRING ) ( 'version' (lv_version_3= RULE_STRING ) )? (lv_reExport_4= 're-export' ) ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:257:1: ( 'required-plugin' (lv_name_1= RULE_STRING ) ( 'version' (lv_version_3= RULE_STRING ) )? (lv_reExport_4= 're-export' ) )
            {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:257:1: ( 'required-plugin' (lv_name_1= RULE_STRING ) ( 'version' (lv_version_3= RULE_STRING ) )? (lv_reExport_4= 're-export' ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:257:2: 'required-plugin' (lv_name_1= RULE_STRING ) ( 'version' (lv_version_3= RULE_STRING ) )? (lv_reExport_4= 're-export' )
            {
            match(input,12,FOLLOW_12_in_rulePluginImport487); 

                    createLeafNode(grammarAccess.getPluginImportAccess().getRequiredPluginKeyword_0(), null); 
                
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:261:1: (lv_name_1= RULE_STRING )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:263:6: lv_name_1= RULE_STRING
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePluginImport509); 

            		createLeafNode(grammarAccess.getPluginImportAccess().getNameSTRINGTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPluginImportRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:281:2: ( 'version' (lv_version_3= RULE_STRING ) )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==13) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:281:3: 'version' (lv_version_3= RULE_STRING )
                    {
                    match(input,13,FOLLOW_13_in_rulePluginImport527); 

                            createLeafNode(grammarAccess.getPluginImportAccess().getVersionKeyword_2_0(), null); 
                        
                    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:285:1: (lv_version_3= RULE_STRING )
                    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:287:6: lv_version_3= RULE_STRING
                    {
                    lv_version_3=(Token)input.LT(1);
                    match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePluginImport549); 

                    		createLeafNode(grammarAccess.getPluginImportAccess().getVersionSTRINGTerminalRuleCall_2_1_0(), "version"); 
                    	

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getPluginImportRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "version", lv_version_3, "STRING", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }


                    }
                    break;

            }

            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:305:4: (lv_reExport_4= 're-export' )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:307:6: lv_reExport_4= 're-export'
            {
            lv_reExport_4=(Token)input.LT(1);
            match(input,14,FOLLOW_14_in_rulePluginImport580); 

                    createLeafNode(grammarAccess.getPluginImportAccess().getReExportReExportKeyword_3_0(), "reExport"); 
                

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPluginImportRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "reExport", true, "re-export", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePluginImport


    // $ANTLR start entryRulePredefTemplatePackage
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:333:1: entryRulePredefTemplatePackage returns [EObject current=null] : iv_rulePredefTemplatePackage= rulePredefTemplatePackage EOF ;
    public final EObject entryRulePredefTemplatePackage() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePredefTemplatePackage = null;


        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:333:63: (iv_rulePredefTemplatePackage= rulePredefTemplatePackage EOF )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:334:2: iv_rulePredefTemplatePackage= rulePredefTemplatePackage EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPredefTemplatePackageRule(), currentNode); 
            pushFollow(FOLLOW_rulePredefTemplatePackage_in_entryRulePredefTemplatePackage626);
            iv_rulePredefTemplatePackage=rulePredefTemplatePackage();
            _fsp--;

             current =iv_rulePredefTemplatePackage; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePredefTemplatePackage636); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePredefTemplatePackage


    // $ANTLR start rulePredefTemplatePackage
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:341:1: rulePredefTemplatePackage returns [EObject current=null] : ( 'predefs-template-package' (lv_name_1= RULE_ID ) (lv_templatePackage_2= RULE_STRING ) ) ;
    public final EObject rulePredefTemplatePackage() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_templatePackage_2=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:346:6: ( ( 'predefs-template-package' (lv_name_1= RULE_ID ) (lv_templatePackage_2= RULE_STRING ) ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:347:1: ( 'predefs-template-package' (lv_name_1= RULE_ID ) (lv_templatePackage_2= RULE_STRING ) )
            {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:347:1: ( 'predefs-template-package' (lv_name_1= RULE_ID ) (lv_templatePackage_2= RULE_STRING ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:347:2: 'predefs-template-package' (lv_name_1= RULE_ID ) (lv_templatePackage_2= RULE_STRING )
            {
            match(input,15,FOLLOW_15_in_rulePredefTemplatePackage670); 

                    createLeafNode(grammarAccess.getPredefTemplatePackageAccess().getPredefsTemplatePackageKeyword_0(), null); 
                
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:351:1: (lv_name_1= RULE_ID )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:353:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePredefTemplatePackage692); 

            		createLeafNode(grammarAccess.getPredefTemplatePackageAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPredefTemplatePackageRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:371:2: (lv_templatePackage_2= RULE_STRING )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:373:6: lv_templatePackage_2= RULE_STRING
            {
            lv_templatePackage_2=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePredefTemplatePackage722); 

            		createLeafNode(grammarAccess.getPredefTemplatePackageAccess().getTemplatePackageSTRINGTerminalRuleCall_2_0(), "templatePackage"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPredefTemplatePackageRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "templatePackage", lv_templatePackage_2, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePredefTemplatePackage


    // $ANTLR start entryRulePredefTemplate
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:400:1: entryRulePredefTemplate returns [EObject current=null] : iv_rulePredefTemplate= rulePredefTemplate EOF ;
    public final EObject entryRulePredefTemplate() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePredefTemplate = null;


        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:400:56: (iv_rulePredefTemplate= rulePredefTemplate EOF )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:401:2: iv_rulePredefTemplate= rulePredefTemplate EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPredefTemplateRule(), currentNode); 
            pushFollow(FOLLOW_rulePredefTemplate_in_entryRulePredefTemplate765);
            iv_rulePredefTemplate=rulePredefTemplate();
            _fsp--;

             current =iv_rulePredefTemplate; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePredefTemplate775); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePredefTemplate


    // $ANTLR start rulePredefTemplate
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:408:1: rulePredefTemplate returns [EObject current=null] : ( 'predef-template' (lv_name_1= RULE_ID ) (lv_template_2= RULE_STRING ) ) ;
    public final EObject rulePredefTemplate() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_template_2=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:413:6: ( ( 'predef-template' (lv_name_1= RULE_ID ) (lv_template_2= RULE_STRING ) ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:414:1: ( 'predef-template' (lv_name_1= RULE_ID ) (lv_template_2= RULE_STRING ) )
            {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:414:1: ( 'predef-template' (lv_name_1= RULE_ID ) (lv_template_2= RULE_STRING ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:414:2: 'predef-template' (lv_name_1= RULE_ID ) (lv_template_2= RULE_STRING )
            {
            match(input,16,FOLLOW_16_in_rulePredefTemplate809); 

                    createLeafNode(grammarAccess.getPredefTemplateAccess().getPredefTemplateKeyword_0(), null); 
                
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:418:1: (lv_name_1= RULE_ID )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:420:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePredefTemplate831); 

            		createLeafNode(grammarAccess.getPredefTemplateAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPredefTemplateRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:438:2: (lv_template_2= RULE_STRING )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:440:6: lv_template_2= RULE_STRING
            {
            lv_template_2=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePredefTemplate861); 

            		createLeafNode(grammarAccess.getPredefTemplateAccess().getTemplateSTRINGTerminalRuleCall_2_0(), "template"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPredefTemplateRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "template", lv_template_2, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePredefTemplate


    // $ANTLR start entryRulePluginTemplate
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:465:1: entryRulePluginTemplate returns [EObject current=null] : iv_rulePluginTemplate= rulePluginTemplate EOF ;
    public final EObject entryRulePluginTemplate() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePluginTemplate = null;


        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:465:56: (iv_rulePluginTemplate= rulePluginTemplate EOF )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:466:2: iv_rulePluginTemplate= rulePluginTemplate EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPluginTemplateRule(), currentNode); 
            pushFollow(FOLLOW_rulePluginTemplate_in_entryRulePluginTemplate902);
            iv_rulePluginTemplate=rulePluginTemplate();
            _fsp--;

             current =iv_rulePluginTemplate; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePluginTemplate912); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePluginTemplate


    // $ANTLR start rulePluginTemplate
    // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:473:1: rulePluginTemplate returns [EObject current=null] : ( 'plugin-template' (lv_template_1= RULE_STRING ) ) ;
    public final EObject rulePluginTemplate() throws RecognitionException {
        EObject current = null;

        Token lv_template_1=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:478:6: ( ( 'plugin-template' (lv_template_1= RULE_STRING ) ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:479:1: ( 'plugin-template' (lv_template_1= RULE_STRING ) )
            {
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:479:1: ( 'plugin-template' (lv_template_1= RULE_STRING ) )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:479:2: 'plugin-template' (lv_template_1= RULE_STRING )
            {
            match(input,17,FOLLOW_17_in_rulePluginTemplate946); 

                    createLeafNode(grammarAccess.getPluginTemplateAccess().getPluginTemplateKeyword_0(), null); 
                
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:483:1: (lv_template_1= RULE_STRING )
            // ../org.openarchitectureware.recipe2.dsl.builder/src-gen/org/openarchitectureware/recipe2/dsl/parser/antlr/internal/InternalRecipeBuilder.g:485:6: lv_template_1= RULE_STRING
            {
            lv_template_1=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePluginTemplate968); 

            		createLeafNode(grammarAccess.getPluginTemplateAccess().getTemplateSTRINGTerminalRuleCall_1_0(), "template"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPluginTemplateRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "template", lv_template_1, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePluginTemplate


 

    public static final BitSet FOLLOW_ruleRecipeBuilderModel_in_entryRuleRecipeBuilderModel73 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRecipeBuilderModel83 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleRecipeBuilderModel142 = new BitSet(new long[]{0x0000000000039802L});
    public static final BitSet FOLLOW_rulePluginImport_in_ruleRecipeBuilderModel181 = new BitSet(new long[]{0x0000000000039002L});
    public static final BitSet FOLLOW_rulePluginTemplate_in_ruleRecipeBuilderModel220 = new BitSet(new long[]{0x0000000000038002L});
    public static final BitSet FOLLOW_rulePredefTemplatePackage_in_ruleRecipeBuilderModel259 = new BitSet(new long[]{0x0000000000018002L});
    public static final BitSet FOLLOW_rulePredefTemplate_in_ruleRecipeBuilderModel298 = new BitSet(new long[]{0x0000000000010002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport336 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport346 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleImport380 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleImport402 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePluginImport_in_entryRulePluginImport443 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePluginImport453 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rulePluginImport487 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePluginImport509 = new BitSet(new long[]{0x0000000000006000L});
    public static final BitSet FOLLOW_13_in_rulePluginImport527 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePluginImport549 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_rulePluginImport580 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePredefTemplatePackage_in_entryRulePredefTemplatePackage626 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePredefTemplatePackage636 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rulePredefTemplatePackage670 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePredefTemplatePackage692 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePredefTemplatePackage722 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePredefTemplate_in_entryRulePredefTemplate765 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePredefTemplate775 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_rulePredefTemplate809 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePredefTemplate831 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePredefTemplate861 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePluginTemplate_in_entryRulePluginTemplate902 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePluginTemplate912 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_rulePluginTemplate946 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePluginTemplate968 = new BitSet(new long[]{0x0000000000000002L});

}